\chapter{Alteração}
\textsf{GLPK} é livre e de código aberto (faz parte do \textsf{GNU Project} e licenciado sobre \textsf{GNU General Public License}). Isso quer dizer que qualquer pessoa pode ter acesso ao código fonte, estudá-la, modificá-la e redistribuí-la (tanto a versão oficial como suas versões modificadas).

Neste capítulo apresentamos como modificar o \textsf{GLPK}.

\section{Código}
Uma vez feito o download do arquivo \lcode{glpk-4.45.tar.gz} e descompactado-o temos no diretório \lcode{glpk-4.45/src/} o código fonte do \textsf{GLPK}.

\section{Busca}
Uma maneira de encontrar qual arquivo apresenta determinada expressão é utilizar o comando \textit{shell} \lcode{grep} como indicado abaixo:
\begin{code}
$ grep -R busca local
\end{code}
onde \lcode{busca} é a expressão deseja e \lcode{local} o diretorio raiz onde será feita a busca (a busca será feita no arquivos e subdiretórios de \lcode{local}). Para que mensagens de erros não seja exibidas e seja executada uma busca \textit{no sensitive case} deve-se utilizar o comando
\begin{code}
$ grep -sRi busca local
\end{code}

\section{Exemplo}
A seguir fazemos uma pequena modificação no texto descritivo da versão e aplicamos tal mudança.

\subsection{Modificando}
No diretório \lcode{glpk-4.45/src/} abra o arquivo \lcode{glpapi19.c} com o editor de sua preferência. Substitua a seguinte função
\begin{code}
static void print_version(int briefly)
{     /* print version information */
      xprintf("GLPSOL: GLPK LP/MIP Solver, v%s\n", glp_version());
      if (briefly) goto done;
      xprintf("\n");
      xprintf("Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, "
         "2007, 2008,\n");
      xprintf("2009, 2010 Andrew Makhorin, Department for Applied Infor"
         "matics, Moscow\n");
      xprintf("Aviation Institute, Moscow, Russia. All rights reserved."
         "\n");
      xprintf("\n");
      xprintf("This program has ABSOLUTELY NO WARRANTY.\n");
      xprintf("\n");
      xprintf("This program is free software; you may re-distribute it "
         "under the terms\n");
      xprintf("of the GNU General Public License version 3 or later.\n")
         ;
done: return;
}
\end{code}
por
\begin{code}
static void print_version(int briefly)
{     /* print version information */
      xprintf("GLPSOL: GLPK LP/MIP Solver, v%s\n", glp_version());
      xprintf("Version changed.");
      if (briefly) goto done;
      xprintf("\n");
      xprintf("Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, "
         "2007, 2008,\n");
      xprintf("2009, 2010 Andrew Makhorin, Department for Applied Infor"
         "matics, Moscow\n");
      xprintf("Aviation Institute, Moscow, Russia. All rights reserved."
         "\n");
      xprintf("\n");
      xprintf("This program has ABSOLUTELY NO WARRANTY.\n");
      xprintf("\n");
      xprintf("This program is free software; you may re-distribute it "
         "under the terms\n");
      xprintf("of the GNU General Public License version 3 or later.\n")
         ;
done: return;
}
\end{code}

\subsection{Aplicando}
Para que as modificações tenham efeito basta instalar novamente o \testsf{GLPK} como apresentado no Capítulo \ref{C:Introducao}.

